package com.springcloud.demo.controller;

import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.ConfigService;
import com.springcloud.demo.config.ConfigProperties;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
public class ConfigController {

    @Autowired
    private ConfigProperties configProperties;

    @Value("${name}")
    private String name;


    @GetMapping("/name")
    public String getName() {
        return configProperties.getName();
    }

    @GetMapping("/mysql")
    public Map<Object, Object> getMySQLProperties() {
        // JDK9中的新特性，快速创建只读集合。
//        return Map.of("host", configProperties.getMysqlHost(),
//                "port", configProperties.getMysqlPort(),
//                "username", configProperties.getMysqlUsername(),
//                "password", configProperties.getMysqlPassword());
        Map<Object, Object> map = new HashMap<>();
        map.put("host",configProperties.getMysqlHost());
        map.put("port",configProperties.getMysqlPort());
        map.put("username",configProperties.getMysqlUsername());
        map.put("password",configProperties.getMysqlPassword());
        return map;
    }

    @GetMapping("/mq")
    public Map<Object, Object> getRabbitMQProperties() {

        //ConfigService.getAppConfig(); // 读取默认 Namespace
        // 读取指定 Namespace
        Config config = ConfigService.getConfig("application-rabbitmq");
        // 获取配置信息，第一个参数为配置项的 key，第二个参数为默认值（读取不到配置就会使用默认值，建议都加上默认值）
        String host = config.getProperty("rabbitmq.host", null);
        String port = config.getProperty("rabbitmq.port", null);
        String username = config.getProperty("rabbitmq.username", null);
        String password = config.getProperty("rabbitmq.password", null);
        // JDK9中的新特性，快速创建只读集合。
//        return Map.of("host", configProperties.getMysqlHost(),
//                "port", configProperties.getMysqlPort(),
//                "username", configProperties.getMysqlUsername(),
//                "password", configProperties.getMysqlPassword());
        Map<Object, Object> map = new HashMap<>();
        map.put("host",host);
        map.put("port",port);
        map.put("username",username);
        map.put("password",password);
        return map;
    }

    @GetMapping("/common")
    public Map<Object, Object> getCommon() {
        //ConfigService.getAppConfig(); // 读取默认 Namespace
        // 读取指定 Namespace
        Config config = ConfigService.getConfig("DEMO.application-common");
        // 获取配置信息，第一个参数为配置项的 key，第二个参数为默认值（读取不到配置就会使用默认值，建议都加上默认值）
        String commonName = config.getProperty("commonName", null);
//
        Map<Object, Object> map = new HashMap<>();
        map.put("commonName",commonName);
        return map;
    }

}
